home *** CD-ROM | disk | FTP | other *** search
- '..I snatched this (old) gem from the UseNet group alt.lang.basic (1994).
- '..Run from a shell. Assumes font is topaz 8. Open a window and/or screen
- '..to improve run-time speed.
-
- DEFINT A-Z
- DIM Array1(30, 20), Array2(30, 20)
- DIM Maze(24, 80)
- RANDOMIZE TIMER
- z = 1: c = 2: s = 1
- x = INT(RND * 26 + 1)
- Array2(x, 1) = 1: r = x
- GOTO 2540
- 2440 IF r <> 26 THEN 2520
- IF s <> 11 THEN 2490
- r = 1: s = 1: GOTO 2530
- 2490 r = 1: s = s + 1: GOTO 2530
- 2520 r = r + 1
- 2530 IF Array2(r, s) = 0 THEN 2440
- 2540 IF r - 1 = 0 THEN 2830
- IF Array2(r - 1, s) THEN 2830
- IF s - 1 = 0 THEN 2680
- IF Array2(r, s - 1) THEN 2680
- IF r = 26 THEN 2610
- IF Array2(r + 1, s) THEN 2610
- x = INT(RND * 3 + 1): ON x GOTO 3140, 3210, 3280
- 2610 IF s <> 11 THEN 2650
- IF z = 1 THEN 2670
- Q = 1: GOTO 2660
- 2650 IF Array2(r, s + 1) THEN 2670
- 2660 x = INT(RND * 3 + 1): ON x GOTO 3140, 3210, 3370
- 2670 x = INT(RND * 2 + 1): ON x GOTO 3140, 3210
- 2680 IF r = 26 THEN 2770
- IF Array2(r + 1, s) THEN 2770
- IF s <> 11 THEN 2740
- IF z = 1 THEN 2760
- Q = 1: GOTO 2750
- 2740 IF Array2(r, s + 1) THEN 2760
- 2750 x = INT(RND * 3 + 1): ON x GOTO 3140, 3280, 3370
- 2760 x = INT(RND * 2 + 1): ON x GOTO 3140, 3280
- 2770 IF s <> 11 THEN 2810
- IF z = 1 THEN 3140
- Q = 1: GOTO 2820
- 2810 IF Array2(r, s + 1) THEN 3140
- 2820 x = INT(RND * 2 + 1): ON x GOTO 3140, 3370
- 2830 IF s - 1 = 0 THEN 3000
- IF Array2(r, s - 1) THEN 3000
- IF r = 26 THEN 2940
- IF Array2(r + 1, s) THEN 2940
- IF s <> 11 THEN 2910
- IF z = 1 THEN 2930
- Q = 1: GOTO 2920
- 2910 IF Array2(r, s + 1) THEN 2930
- 2920 x = INT(RND * 3 + 1): ON x GOTO 3210, 3280, 3370
- 2930 x = INT(RND * 2 + 1): ON x GOTO 3210, 3280
- 2940 IF s <> 11 THEN 2980
- IF z = 1 THEN 3210
- Q = 1: GOTO 2990
- 2980 IF Array2(r, s + 1) THEN 3210
- 2990 x = INT(RND * 2 + 1): ON x GOTO 3210, 3370
- 3000 IF r = 26 THEN 3080
- IF Array2(r + 1, s) THEN 3080
- IF s <> 11 THEN 3060
- IF z = 1 THEN 3280
- Q = 1: GOTO 3220
- 3060 IF Array2(r, s + 1) THEN 3280
- x = INT(RND * 2 + 1): ON x GOTO 3280, 3370
- 3080 IF s <> 11 THEN 3120
- IF z = 1 THEN 2440
- Q = 1: GOTO 3370
- 3120 IF Array2(r, s + 1) THEN 2440
- GOTO 3370
- 3140 Array2(r - 1, s) = c
- c = c + 1: Array1(r - 1, s) = 2
- r = r - 1: IF c > 286 THEN 3570
- Q = 0: GOTO 2540
- 3210 Array2(r, s - 1) = c
- 3220 c = c + 1: Array1(r, s - 1) = 1
- s = s - 1: IF c > 286 THEN 3570
- Q = 0: GOTO 2540
- 3280 Array2(r + 1, s) = c
- c = c + 1
- IF Array1(r, s) = 0 THEN 3330
- Array1(r, s) = 3: GOTO 3340
- 3330 Array1(r, s) = 2
- 3340 r = r + 1
- IF c > 286 THEN 3570
- GOTO 2830
- 3370 IF Q = 1 THEN 3470
- Array2(r, s + 1) = c: c = c + 1
- IF Array1(r, s) = 0 THEN 3430
- Array1(r, s) = 3: GOTO 3440
- 3430 Array1(r, s) = 1
- 3440 s = s + 1
- IF c > 286 THEN 3570
- GOTO 2540
- 3470 z = 1
- IF Array1(r, s) = 0 THEN 3520
- Array1(r, s) = 3: Q = 0: GOTO 2440
- 3520 Array1(r, s) = 1
- Q = 0: r = 1: s = 1: GOTO 2530
- 3570
- FOR i = 1 TO 24
- FOR j = 1 TO 80
- Maze(i, j) = 46
- NEXT
- NEXT
- FOR i = 1 TO 26
- FOR j = 1 TO 11
- IF Array1(i, j) = 0 OR Array1(i, j) = 1 THEN
- Maze(j * 2, i * 3 - 1) = 46
- Maze(j * 2, i * 3) = 46
- Maze(j * 2, i * 3 + 1) = 127
- END IF
- IF Array1(i, j) = 2 OR Array1(i, j) = 3 THEN
- Maze(j * 2, i * 3 - 1) = 46
- Maze(j * 2, i * 3) = 46
- Maze(j * 2, i * 3 + 1) = 46
- END IF
- IF Array1(i, j) = 0 OR Array1(i, j) = 2 THEN
- Maze(j * 2 + 1, i * 3 - 2) = 127
- Maze(j * 2 + 1, i * 3 - 1) = 127
- Maze(j * 2 + 1, i * 3) = 127
- END IF
- IF Array1(i, j) = 1 OR Array1(i, j) = 3 THEN
- Maze(j * 2 + 1, i * 3 - 2) = 127
- Maze(j * 2 + 1, i * 3 - 1) = 46
- Maze(j * 2 + 1, i * 3) = 46
- END IF
- NEXT
- NEXT
- FOR i = 1 TO 79
- Maze(1, i) = 127: Maze(23, i) = 127
- NEXT
- FOR i = 1 TO 23
- Maze(i, 1) = 127: Maze(i, 79) = 127
- NEXT
- COLOR 14, 1: CLS
- FOR i = 1 TO 23: FOR j = 1 TO 79
- LOCATE i, j: PRINT CHR$(Maze(i, j));
- NEXT: NEXT: PRINT: PRINT
- END
-